package com.forest.service;

/**
 * 加密接口.
 *
 * @author Administrator
 */
public interface IEncryption {

    /**
     * 加密base64.
     *
     * @param data
     * @return
     */
    String encryptBase64(String data);

    /**
     * 加密base64.
     *
     * @param data
     * @param key
     * @return
     */
    String encryptBase64(String data, String key);

    /**
     * 加密base64.
     *
     * @param data
     * @param key
     * @param iv
     * @return
     */
    String encryptBase64(String data, String key, String iv);

    /**
     * 加密base64(是否将nonce添加到密文中).
     * @param data
     * @param key
     * @param iv
     * @param wrap
     * @return
     */
    String encryptBase64(String data, String key, String iv, boolean wrap);

    /**
     * 加密hex.
     *
     * @param data
     * @return
     */
    String encryptHex(String data);

    /**
     * 加密hex.
     *
     * @param data
     * @param key
     * @return
     */
    String encryptHex(String data, String key);

    /**
     * 加密base64.
     *
     * @param data
     * @param key
     * @param iv
     * @return
     */
    String encryptHex(String data, String key, String iv);

    /**
     * 加密hex(是否将nonce添加到密文中).
     * @param data
     * @param key
     * @param iv
     * @param wrap
     * @return
     */
    String encryptHex(String data, String key, String iv, boolean wrap);
    /**
     * 解密.
     *
     * @param data
     * @return
     */
    String decrypt(String data);

    /**
     * 解密.
     *
     * @param data
     * @param key
     * @return
     */
    String decrypt(String data, String key);

    /**
     * 解密.
     *
     * @param data
     * @param key
     * @param iv
     * @return
     */
    String decrypt(String data, String key, String iv);

    /**
     * 解密.
     *
     * @param data
     * @param key
     * @param iv
     * @param wrap
     * @return
     */
    String decrypt(String data, String key, String iv, boolean wrap);
}
